
import java.util.*;


import org.junit.BeforeClass;
import org.junit.Test;


public class ZZTestJugar {
	private static LinkedList<Jugador> jugadores = new LinkedList<Jugador>();
	private static Recursos recursos = Recursos.getInstancia();
	private static Jugador jugadorRol;
	private static Map<String, Roles> rol;
	private static Roles roles;
	private static long salida = 10000000;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		Jugador jug1 = new Jugador("Pablo");
		Jugador jug2 = new Jugador("Zambomba acuática");
		Jugador jug3 = new Jugador("Daredevil");
		
		jugadores.add(jug1);
		jugadores.add(jug2);
		jugadores.add(jug3);
	}
	@Test
	public void testJugar(){
		Jugador jug = Jugar();
		assert (jug instanceof Jugador);
	}
	public Jugador Jugar(){
		boolean finRonda = false;
		boolean finTurno = false;
		Gobernador gobernador = Gobernador.getInstance();
		Collection<Jugador> jugadoresG = new LinkedList<Jugador>();
		Collection<Jugador> jugadoresR = new LinkedList<Jugador>();
		Collection<Jugador> jugadoresT = new LinkedList<Jugador>();
		jugadoresG.addAll(jugadores);
		jugadoresR.addAll(jugadores);
		jugadoresT.addAll(jugadores);
		Jugador jugadorGobernador = jugadores.get(1);
		jugadorRol = jugadorGobernador;
		Jugador jugadorTurno = jugadorGobernador;
		while (!(finRonda||condicionDeVictoria())){
			elegirRol(rol);
			salida--; //Esto es para probar que no salia del tiron de los bucles
			//boolean privilegio = true;
			while (!(finTurno||condicionDeVictoria())){
				//rolActual.accion(jugadorTurno, privilegio);
				//privilegio = false;
				jugadorTurno = siguienteJugador(jugadoresT);
				
				if (jugadorTurno==jugadorRol){
					finTurno=true;
				}
				jugadorRol = siguienteJugador(jugadoresR);
				
			}
			if((jugadorRol==jugadorGobernador)&&(rol.size()==2)){	//condición salida ronda,													
				finRonda=true; 															//después de que el gobernador vuelva a elegir rol
				roles.ponerDoblon(rol); //no se puede hacer con linkedlist, por problemas de implementacion, hay que hacerlo con map
                jugadorGobernador = siguienteJugador(jugadoresG);
                gobernador.setJugador(jugadorGobernador);
			}
			
		}
		Jugador G = ganador(jugadores);
		//System.out.println ("Enhorabuena "+G.nombre+", has ganado." );
		return G;
		}
private Jugador ganador(LinkedList<Jugador> jugadores2) {
		// TODO Auto-generated method stub
		return null;
	}
private Roles elegirRol(Map<String, Roles> rol2) {
		// TODO Auto-generated method stub
		return null;
	}
private boolean condicionDeVictoria(){//Completa
		boolean cond = false;
		if (recursos.getColonos()==0){
			return true;
			}
			
		if (recursos.getPV() == 0){
			return true;
			}
			
		if (salida == 0){
			cond = true;
		}
		
		return cond;
	}
private Jugador siguienteJugador(Collection<Jugador> jug) {
	Iterator<Jugador> jugadoresIt = jug.iterator();
	if (!jugadoresIt.hasNext()) {
		jugadoresIt = jug.iterator();
	}
	return jugadoresIt.next();
}
}
